package com.ioPackage;


/**
 * @ClassName RecursionDemo
 * @Description 递归
 * @Author 2214361854
 * @Date 2022/2/27 16:54
 * @Version 1.0
 */
public class RecursionDemo {
    public static void main(String[] args) {
        int n1 = 5;
        System.out.println("案例1：1-"+n1+"的阶乘="+axn(n1));
        int n2 = 5;
        System.out.println("案例2：1-"+n2+"的和="+ajn(n2));
        System.out.println("案例3：猴子吃桃"+hzct(1));
    }

    /**
     * 案例1、计算1-n的阶乘
     */
    public static int axn(int n){
        if (n == 1) {
            return 1;
        } else {
            return axn(n-1)*n;
        }
    }
    /**
     * 案例2、计算1-n的和
     */
    public static int ajn(int n){
        if (n == 1) {
            return 1;
        } else {
            return ajn(n-1)+n;
        }
    }
    /**
     * 案例3、猴子吃桃，每天天吃一半+1，10天后还有1个，（第一天）一共有多少个桃子
     * f(x) - f(x)/2-1 = f(x+1)
     * 2f(x) - f(x)-2  = 2f(x+1)
     * f(x) = 2f(x+1)+2
     */
    public static int hzct(int n){
        if (n == 10) {
            return 1;
        } else {
            return 2*hzct(n+1)+2;
        }
    }

}
